소프트웨어 설계
소프트웨어 설계 (Software Design)
모듈화, 응집도, 결합도, Inspection
모듈화 (Modularity)
요구사항을 소프트웨어 표현으로 변환하는 과정
좋은 설계 특성
- 계층 구조
- 명확한 모듈 분할
- 간단한 인터페이스
- 변경 용이
응집도 (Cohesion) — 높을수록 좋음
한 모듈 내부 요소들의 관련성 강도
| 수준 (높음→낮음) | 설명 |
|---|---|
| 기능적 응집 | 하나의 기능만 수행 (최고) |
| 순차적 응집 | 앞 활동의 출력이 다음 활동의 입력 |
| 통신적 응집 | 같은 데이터를 사용하는 활동들 |
| 절차적 응집 | 특정 순서로 실행되는 활동들 |
| 시간적 응집 | 같은 시점에 실행되는 활동들 (초기화 등) |
| 논리적 응집 | 논리적으로 유사한 활동들 묶음 |
| 우연적 응집 | 관련 없는 활동들의 묶음 (최악) |
결합도 (Coupling) — 낮을수록 좋음
두 모듈 간의 상호의존성 정도
| 수준 (낮음→높음) | 설명 |
|---|---|
| Message Coupling | 공개 인터페이스만 사용 (가장 느슨) |
| Data Coupling | 단순 데이터 타입 파라미터 전달 (최소한 유지 필요) |
| Stamp Coupling | 구조체로 전달 (불필요한 정보 전달 주의) |
| Control Coupling | 내부 로직 제어를 위한 플래그 전달 (Forward/Backward) |
| Common Coupling | 전역 변수 공유 → 파동 효과 발생 |
| Content Coupling | 다른 모듈 내부 직접 참조/변경 (가장 강함) |
Inspection (코드 검토)
- 소프트웨어 산출물을 단계별로 체계적으로 검토
- Testing과 달리 코드 실행 없이 오류 발견
절차
- 프리팩: 자료 배포
- 개요(선택): 작성자가 산출물 설명
- 준비: 각 검토자가 산출물 검토
- Inspection 미팅: 결함 발견 및 기록
- Side Hour: 추가 검토
- 수정/검증: 발견된 결함 수정 후 확인
- 평가
결함 분류
- Clarity: 명확성 문제
- Accuracy: 정확성 문제
- Consistency: 일관성 문제